﻿#define _CRT_SECURE_NO_WARNINGS//将数组中的元素向右轮转 k 个位置，其中 k 是非负数。
#include<stdio.h>
void rotate(int* nums, int numsSize, int k) {
	/*int arr[100] = {0};
	k %= numsSize;
	if (numsSize == 1)
	{
		return 0;
	}
	for (int i = 0; i < numsSize - k; i++)
	{
		arr[i] = nums[i];
	}
	for (int j = 0; j < numsSize - (numsSize - k); j++)
	{
		nums[j] = nums[numsSize - k + j];
	}
	for (int n = 0; n < numsSize - k; n++)
	{
		nums[numsSize - (numsSize - k) + n] = arr[n];
	}*/
	for (int i = 0; i < (numsSize - k) / 2; i++)
	{
		int tmp = nums[i];
		nums[i] = nums[numsSize - k - 1 - i];
		nums[numsSize - k - 1 - i] = tmp;
	}
	int m = numsSize - 1;
	for (int i = numsSize - k; i < (numsSize - k) + k / 2; i++)
	{
		int tmp = nums[i];
		nums[i] = nums[m];
		nums[m] = tmp;
		m--;
	}
	for (int i = 0; i < numsSize / 2; i++)
	{
		int tmp = nums[i];
		nums[i] = nums[numsSize - 1 - i];
		nums[numsSize - 1 - i] = tmp;
	}
}
int main()
{
	int nums[9] = { 1,2,3,4,5,6,7,8,9 };
	int k = 4;
	int numsSize = 9;
	rotate(nums, numsSize, k);
	for (int i = 0; i < numsSize; i++)
	{
		printf("%d ", nums[i]);
	}
	return 0;
}
